//
//  StatusMenu.m
//
//  Created by Jean-Pierre Lozi on 07/03/10.
//  Copyright 2010 None. All rights reserved.
//

#import "StatusMenu.h"

#import "Settings.h"

@implementation StatusMenu
@synthesize statusList, status, settings;

// Fonction exécutée une fois que la vue a été chargée.
- (void)viewDidLoad {
	// On appelle le viewDidLoad du parent.
    [super viewDidLoad];
	
	// On met à jour le titre de la page.
	self.title = @"Statut";
	
	// On initialise la liste des statuts avec les valeurs par défaut.
	statusList = [[NSArray alloc] initWithObjects:@"Disponible", @"Occupé", nil];
}

// Combien y a-t-il de sections?
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
	// Il n'y a qu'une section dans la page.
	return 1;
}

// Combien y a-t-il de lignes dans la section courante?
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
	// On renvoie le nombre de statuts dans la liste de status.
	return [statusList count];
}

// La ligne demandée est-emme cochée?
- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath
{
	// S'il s'agit du statut courant, oui.
	if ([[self status] isEqualToString:[[self statusList] objectAtIndex:[indexPath row]]])
		return UITableViewCellAccessoryCheckmark;
	
	// Sinon, non.
	return UITableViewCellAccessoryNone;
}

// Fonction renvoyant la cellule à l'index path donné.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
	// Toutes les cellules sont de type checkableCellIdentifier dans cette page.
	static NSString *checkableCellIdentifier = @"checkableCellIdentifier";
	
	// On récupère une cellule.
	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:checkableCellIdentifier];
	
	// Si on n'a pas pu récupérer de cellule...
	if (cell == nil) {
		// ...on la crée.
		cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:checkableCellIdentifier] autorelease];
	}
	
	// On met à jour le texte de la cellule.
	cell.textLabel.text = [[self statusList] objectAtIndex:[indexPath row]];
	
	// On renvoie la cellule.
	return cell;
}

// Fonction appellée lorsque la ligne passée en paramètre vient d'être sélectionnée.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{	
	// On met à jour le statut localement.
	[self setStatus:[statusList objectAtIndex:[indexPath row]]];
	
	// On le met à jour dans l'objet parent.
	[settings setTemporaryStatus:[statusList objectAtIndex:[indexPath row]]];
	
	// Pour chaque ligne...
	for (int i = 0 ; i < 2 ; i++)
	{
		// ...on récupère la cellule...
		UITableViewCell *cell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
		
		// ...puis on la décoche.
		[cell setAccessoryType:UITableViewCellAccessoryNone];
	}
	
	// Puis on récupère la cellule qui vient d'être sélectionnée...
	UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
	
	// ...on la coche...
	[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
	
	// ...et on on la déselectionne.
	[tableView deselectRowAtIndexPath:indexPath animated:YES];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

- (void)viewDidUnload
{}


- (void)dealloc
{
    [super dealloc];
	
	// Releases.
	[statusList release];
	[status release];
	[settings release];
}


@end
